# Data Extension Overview

**Category:** Features/Enrich/Data Extension

## Overview

### Introduction

Patterns Data Extension feature builds on the [open platform Data Extensions capability](https://dev.wix.com/docs/rnd-general/articles/open-platform/data-extensions/data-extensions-101).

Use this feature to give users more flexibility in managing and displaying data, including:

* **Customization for TPAs**: Enable third-party applications to enrich your tables with their extended fields.
* **Enhanced UX for site builders**: Enable site builders to customize their tables by adding, reordering, and hiding extended fields.
* **Direct data entry**: Simplify data input by allowing users to create extended fields directly from the dashboard.

### Features

Enhance your Patterns components so that your users can:

* View extended fields on collection and entity pages.
* Show, reorder, and hide extended fields with the custom columns feature.
* Filter and sort extended field data with minimal effort.
* Enter extended field data directly in entity forms.

![Extended fields demo](./extended-fields.gif)

### Get started

* [Display Your Fields](./?path=/story/features-enrich-data-extension--display-extended-fields)
* [Enable Filters](./?path=/story/features-enrich-data-extension--enable-filters-for-extended-fields)
* [Allow Your Users to Add Extended Fields](./?path=/story/features-enrich-data-extension--allow-users-to-add-extended-fields)

### Examples

For detailed code samples, check out the **Examples** tab.


## FAQ

### I integrated with CustomFieldsWidget and I need a way to get the data from the form. How can I do that?

If you need a way to retrieve data from the form, you can use the `validate` and `isDirty` methods that are part of the [FormPageState](./?path=/story/common-state--formpagestate). These methods allow you to validate the form data and determine if any changes have been made respectively. To access them, you can retrieve the `state` directly from [useWidgetsFormContext](./?path=/story/common-hooks--usewidgetsformcontext) hook. Take a look at the [CustomFieldsWidget](./?path=/story/features-enrich-data-extension-components--customfieldswidget) for a complete example.

### Is there a restriction on the amount of data that can be stored in the custom fields? If so, what is it?

Yes, there is a limit to the data you can store in the custom fields. You can store up to 50 fields or up to 10kb of fields schema data. To give you an idea of the data size, each short string field takes 120 bytes, while a long text field takes 200 bytes. For instance, if you have 50 fields of short text, you will reach a total of 6KB. On the other hand, if you have 50 fields of long text, you will reach the 10KB limit. It's important to note that in some cases like dropdowns, the field size is determined by the field schema length. This means that theoretically you could reach the limit before reaching the 50 fields limit if the data is large enough. In such a scenario, you will receive an error message indicating the limit has been exceeded.

### Can I open the custom field modal from my code? If so, how?

Absolutely! You have the ability to open the modal directly from your code. To do so, simply call the `openCustomFieldModal` method, which is available through the [ToolbarCollectionState](./?path=/story/common-state--toolbarcollectionstate). To access it, call `state.toolbar.openCustomFieldModal()` where state represents the result of invoking either [useTableCollection](./?path=/story/base-components-collections-table-usetablecollection--usetablecollection) or [useGridCollection](./?path=/story/base-components-collections-grid-usegridcollection--usegridcollection).

### If a TPA creates custom fields, will those fields be visible?

Currently, only user fields created by the user are supported, and they are stored in the `_user_fields` namespace. If a TPA creates custom fields, they will be stored in a separate namespace and will not be visible in the Data Extension integration.

### I have a question that is not answered in this FAQ. What should I do?

If you have a question that is not addressed in this FAQ, don't worry! You can always get in touch with us by joining the [#cairo](https://wix.slack.com/archives/C02K83200PL) Slack channel. We'll be more than happy to assist you there and provide the necessary support.

## BI

### Custom Columns Events

 Event   |   Description   |
--------- | --------------- |
[144:155](https://bo.wix.com/data-tools/bi-catalog-app/event/144:155) | Send when a user click on a "Add Custom Field"
[144:156](https://bo.wix.com/data-tools/bi-catalog-app/event/144:156) | Send when a user click on cancel / add field in the "Add Custom Field" modal
[144:157](https://bo.wix.com/data-tools/bi-catalog-app/event/144:157) | Send when a user click on "Advanced Settings" in the "Add Custom Field" modal
[144:160](https://bo.wix.com/data-tools/bi-catalog-app/event/144:160) | Sent when a user changes his choices before he clicks on the apply button in a Wix Patterns component



### Component load events
Event   |   Description   |
--------- | --------------- |
[144:110](https://bo.wix.com/data-tools/bi-catalog-app/event/144:110) | Sent when a Wix Patterns component starts loading
[144:111](https://bo.wix.com/data-tools/bi-catalog-app/event/144:111) | Sent when a Wix Patterns component is done loading


#### 🐪 Couldn't find what you need?
* Check our [BI Catalog](https://bo.wix.com/data-tools/bi-catalog-app?viewId=all-items-view&selectedColumns=src%2Cevid%2Cname%2Cowner%2Cproduct%2CuserType+false%2CdateUpdated%2CdateCreated+false%2CcreatedBy+false%2Cstatus&source=%5B%7B%22id%22%3A%22144%22%2C%22name%22%3A%22144+-+Cairo%22%7D%5D)
* Contact us on [#cairo-bi](https://wix.slack.com/archives/C03N53KURH9)


